import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Clase de plataformas móviles 
 * 
 * @author (Gerardo Antonio Hernandez & Christian Israel Rodriguez Ahumada) 
 * @version (26.06.2013)
 */
public class PlataformaMovil extends BaseSolida
{
    //private int velocidad;
    private String direccion; 
    /**
     * Constructor de PlataformaMovil
     */
    public PlataformaMovil()
    {
        super();
        direccion="derecha";
    }
    
    /**
     * Revisa la posicion del heroe
     */
    public void posicionHeroe()
    {
        if(super.getHeroe()!=null)
        {
            

            if((super.getHeroe().getX()>this.getX()+(this.getImage().getWidth()/2)|| super.getHeroe().getX()<this.getX()-(this.getImage().getWidth()/2)))
                super.getHeroe().cambiaBanderaCaer(true);
            else
            {
                if(super.getHeroe().getY()>=this.getY() && super.getHeroe().getCaer()==false)
                    super.getHeroe().setLocation(super.getHeroe().getX(),(this.getY()-(this.getImage().getHeight()/2)-8));
                super.getHeroe().cambiaBanderaCaer(false);
            }      
        }
    }
    
    public void act() 
    {
        this.mueve();
        super.buscaHeroe();
        this.HeroeArriba();
        this.posicionHeroe();
        
    }    
    
    /**
     * Revisa si el heroe esta situdado sobre la base
     */
    private void HeroeArriba()
    {
        
        if(super.getHeroe()!=null)
        {
            super.getHeroe().cambiaBanderaCaer(false);
        }
    }
    
    /**
     * Cambia la direccion de movimiento
     */
    public void cambiaDireccion(String unaDireccion)
    {
        direccion=unaDireccion;
    }
    
    /**
     * Mueve la PlataformaMovil
     */
     public void mueve()
    {
         World mundo= getWorld();
        GreenfootImage imagen = getImage();
        
        BaseSolida base=(BaseSolida)super.getOneIntersectingObject(BaseSolida.class);
        
        //move(1);
        
        
        
          if(direccion=="derecha")
        {
            if(super.getHeroe()!=null)
                super.getHeroe().move(1);
            this.move(1);

        }

        if(direccion=="izquierda")
        {

            if(super.getHeroe()!=null)
                super.getHeroe().move(-1);
            this.move(1);
        }
        
        
        if(base!=null)
        {

            if(direccion=="derecha")
            {
                this.move(1);
                if(super.getHeroe()!=null )
                    super.getHeroe().move(1);
                  direccion="izquierda";
                if(base instanceof PlataformaMovil)
                {
                    PlataformaMovil pla=(PlataformaMovil)base;
                    pla.cambiaDireccion("derecha");
                }
            }
            else
            {
                this.move(3);
                if(super.getHeroe()!=null )
                    super.getHeroe().move(1);
                direccion="derecha";
                if(base instanceof PlataformaMovil)
                {
                    PlataformaMovil pla=(PlataformaMovil)base;
                    pla.cambiaDireccion("izquierda");
                }
            }
        }
        
        
        if((super.getX()+(imagen.getWidth()/2))==699 || isTouching(BaseSolida.class))
        {
            turn(180);
            direccion="izquierda";
        }

        if((super.getX()-(imagen.getWidth()/2))==1 || isTouching(BaseSolida.class))
        {
            turn(180);
            direccion="derecha";
        }
    }
}
